package com.letao.server.interceptor;

import com.letao.server.utils.UserHolderUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.NonNull;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * 接口等级拦截器
 * 拦截等级: 用户级
 */
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(@NonNull HttpServletRequest request,
                             @NonNull HttpServletResponse response,
                             @NonNull Object handler) {
        if ("OPTIONS".equals(request.getMethod())) {
            return true;
        }
        // 判断是否需要拦截（ThreadLocal中是否有用户）
        if (UserHolderUtils.getUser() == null) {
            // 没有，需要拦截，设置状态码
            response.setStatus(401);
            // 拦截
            return false;
        }
        // 有用户，则放行
        return true;
    }
}
